package com.qf.mapper.custom;

import com.qf.entity.custom.ShopCustom;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @author: ZhangYubin
 * @date: 2020/7/22 19:44
 * @description:
 */
public interface ShopCustomMapper {
    /**
     * 查询shop表、dessertmenu表和user表数据
     * @return 返回List<ShopCustom>
     */
    public List<ShopCustom> selectShopDessermenuUser();

    /**
     * 根据新品查询shop表、product表
     * @return 返回List<ShopCustom>
     */
    public List<ShopCustom> selectShopProductisnew();

    /**
     * 根据推荐查询shop表、product表
     * @return 返回List<ShopCustom>
     */
    public List<ShopCustom> selectShopProductisrecommend();

    /**
     *
     * 根据商品类型查询所有店铺和商品信息
     *
     * @param productType 对应Product实体类的productType
     * @return 返回一个ShopCustom实体类型的list集合
     */
    public List<ShopCustom> selectShop_Product(@Param("productType") String productType);

    /**
     * 根据店铺距离排序 按升序排序 查询所有店铺商品信息
     * @return 返回一个ShopCustom实体类型的list集合
     */
    List<ShopCustom> selectShop_ProductByDistance();

    /**
     * 根据店铺评分排序 按降序排序 查询所有店铺商品信息
     * @return 返回一个ShopCustom实体类型的list集合
     */
    List<ShopCustom> selectShop_ProductByPoint();

    /**
     * 根据店铺销量排序 按降序排序 查询所有店铺商品信息
     * @return 返回一个ShopCustom实体类型的list集合
     */
    List<ShopCustom> selectShop_ProductBySalesnum();

    /**
     * 根据是否免约 是否节假日可用 是否是新店 三个条件查询店铺商品信息
     * @return 返回一个ShopCustom实体类型的list集合
     */
    List<ShopCustom> selectShop_ProductByExample(@Param("isfree") String isfree, @Param("isholiday") String isholiday, @Param("isnew") Integer isnew);

    /**
     * 根据店铺点击量查询店铺，并按点击量降序
     * @return 返回一个ShopCustom实体类型的list集合
     */
    public List<ShopCustom> selectShopByCount();

    /**
     * 根据店铺id查询店铺详细信息 以及 该店铺所含套餐信息
     * @param shopId 店铺id
     * @return 返回一个ShopCustom实体类型的list集合
     */
    public List<ShopCustom> selectShopSetMeal(@Param("shopId") Integer shopId);

    /**
     * 根据店铺id查询店铺详细信息 以及 该店铺所含商品信息
     * @param shopId 店铺id
     * @return 返回一个ShopCustom实体类型的list集合
     */
    public List<ShopCustom> selectShopProduct(@Param("shopId") Integer shopId);

    /**
     * 根据店铺id和商品标题查询店铺详细信息 以及 该店铺所含商品信息
     * @param shopId 店铺id
     * @return 返回一个ShopCustom实体类型的list集合
     */
    public List<ShopCustom> selectShopProductTitle(@Param("shopId") Integer shopId,@Param("productName") String productName);

    /**
     * 根据店铺id和商品类型查询店铺详细信息 以及 该店铺所含商品信息
     * @param shopId 店铺id
     * @return 返回一个ShopCustom实体类型的list集合
     */
    public List<ShopCustom> selectShopProductType(@Param("shopId") Integer shopId,@Param("productType") String productType);

    public int selectShopUserCount(@Param("shopId") Integer shopId);

    public int selectShopUserCountIsNew(@Param("shopId") Integer shopId,@Param("createtime") Date createtime);

}
